/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.bl;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.desarrollosw2.Categoria;
import mx.its.desarrollosw2.CategoriaDeLibro;
import mx.its.desarrollosw2.Libro;
import mx.its.desarrollosw2.dao.CategoriaDeLibroDaoLocal;
import mx.its.desarrollosw2.dao.LibroDaoLocal;
import mx.its.dsw2.biblioteca.enumeracion.Estadotransaccion;

/**
 *
 * @author sistemas
 */
@Stateless
public class LibroBl implements LibroBlLocal {
    @EJB
    private LibroDaoLocal libroDao;
    @EJB
    private CategoriaDeLibroDaoLocal categoriaLibroDao;
////    private Libro getCategoriaDeLibroList;
    
    
// private CategoriaDeLibroDaoLocal categoriaDao;
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public Estadotransaccion register(Libro book,List<Categoria> categories) {
       if(libroDao.findDuplicity(book)){
           return Estadotransaccion.INCOMPLETO;
       }else{
           libroDao.create(book);
        for(Categoria c:categories){
            CategoriaDeLibro cdl=new CategoriaDeLibro();
            cdl.setIdCategoria(c);
            cdl.setIdLibro(book);
            categoriaLibroDao.create(cdl);
           
       }
       return Estadotransaccion.COMPLETO; 
            
        }
     

    }
    
    @Override
   
     public Estadotransaccion modify(Libro book,List<Categoria> lista) {
       libroDao.edit(book);
            List<CategoriaDeLibro> old=book.getCategoriaLibroList();
            for(CategoriaDeLibro c:old){
            categoriaLibroDao.remove(c);
            }
            for(Categoria c:lista){    
            CategoriaDeLibro cdl=new CategoriaDeLibro();
           cdl.setIdCategoria(c);
           cdl.setIdLibro(book);
           categoriaLibroDao.create(cdl);
//           
       }
       //       if(book.getId()==null || libroDao.find(book.getId())==null){
//    return Estadotransaccion.INCOMPLETO;
//}else{
//   libroDao.edit(book);
   return Estadotransaccion.COMPLETO;
    
    }
    

    @Override
    public Estadotransaccion delete(Libro book) {
             if(book.getId()==null || libroDao.find(book.getId())==null){
    return Estadotransaccion.INCOMPLETO;
}else{
   libroDao.remove(book);
   return Estadotransaccion.COMPLETO;
    }
    }

    @Override
    public List<Libro> getAll() {
        return libroDao.findAll();
    }
    @Override
    public Libro findBookForLend(String codigoLibro){
       return libroDao.findBookForLend(codigoLibro);
       
   }
           

}
